<?php
declare (strict_types = 1);

namespace app\controller;

use AlibabaCloud\SDK\Sts\V20150401\Models\AssumeRoleRequest;
use AlibabaCloud\SDK\Sts\V20150401\Sts;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use app\BaseController;
use app\job\Task;
use app\model\Config;
use app\model\Version;
use think\facade\Queue;

class ConfigController extends BaseController
{
	/**
	 * 获取最新版本
	 */
    function get_version(string $device_type)
    {
        $device_type=$device_type=='android'?1:2;
        $row = Version::where(['status'=>'normal','device_type'=>$device_type])->order('weigh','desc')->find();
        return json([
            'code'=>200,
            'data'=>$row,
            'msg'=>'ok'
        ]);
    }
	
	
	/**
	 * 获取协议
	 * @return void
	 */
	function get_protocol()
	{
		$region = request()->header('region');

		$rows = Config::where(['group'=>'protocol'])->filter(function ($data)use($region){
			if ($region==1){
				if ($data['name']=='privacy_rule'){
					$data['value'] = Config::getFieldByName('privacy_global_rule','value');
				}
				if ($data['name']=='users_rule'){
					$data['value'] = Config::getFieldByName('users_global_rule','value');
				}
			}
		})->select();
		writeJson($rows);
	}
	
	/**
	 * 获取优惠活动教程
	 * @return void
	 */
	function get_activity_course()
	{
		$row = Config::getFieldByName('activity_course','value');
		writeJson($row);
	}
	
	/**
	 * 添加队列
	 * @return void
	 */
	function add_queue($expiretime,$data)
	{
		Queue::later($expiretime,Task::class, $data, 'task');
		writeJson();
	}
	
	function getSTSToken()
	{
		try {
			// 运行本代码示例之前，请确保已使用步骤1创建的RAM用户的访问密钥设置环境变量YOUR_ACCESS_KEY_ID和YOUR_ACCESS_KEY_SECRET。
			$config = new \Darabonba\OpenApi\Models\Config([
				'accessKeyId' => 'LTAI5t9YMjRfJ9DXuL4MY3jM',
				'accessKeySecret' => 'YTvAoScA5wszClZogMWRohOcNvctJd',
			]);
			//
			$config->endpoint = "sts.cn-hangzhou.aliyuncs.com";
			$client =  new Sts($config);
			
			$assumeRoleRequest = new AssumeRoleRequest([
				// roleArn填写步骤2获取的角色ARN，例如acs:ram::175708322470****:role/ramtest。
				"roleArn" => "acs:ram::1708829520309227:role/ramosstest",
				// roleSessionName用于自定义角色会话名称，用来区分不同的令牌，例如填写为sessiontest。
				"roleSessionName" => "sessiontest",
				// durationSeconds用于设置临时访问凭证有效时间单位为秒，最小值为900，最大值以当前角色设定的最大会话时间为准。本示例指定有效时间为3000秒。
				"durationSeconds" => 3000,
			]);
			$runtime = new RuntimeOptions([]);
			$result = $client->assumeRoleWithOptions($assumeRoleRequest, $runtime);
		}catch (\Exception $e){
			writeJson(0,$e->getMessage());
		}
		writeJson(1,'',$result->body->credentials);
	}
	
	
}
